local smart_table = { "zat_stalker_base_smart", "jup_b41", "jup_a6", "pri_a16" } -------------------------------------------------------------------------------- -- Predicate functions for xr_animpoint actions -------------------------------- -------------------------------------------------------------------------------- function const_predicate_true(id) local npc = db.storage[id] and db.storage[id].object if (npc and db.storage[id].need_sleep) then return false end return true end --mlr function animpoint_predicate_use_pda(id) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end --mlr function animpoint_predicate_bread(id) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_kolbasa(id) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_vodka(id) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_energy(id) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_guitar(id, camp) if not (camp) then return false end local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_harmonica(id, camp) if not (camp) then return false end local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then return true end return false end function animpoint_predicate_weapon(id) return true end function animpoint_predicate_need_sleep(id, camp) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep and level.get_time_hours() < 5 or level.get_time_hours() > 20) then if (db.storage[id].check_sleep and time_global() < db.storage[id].check_sleep) then return db.storage[id].need_sleep == true end db.storage[id].check_sleep = time_global() + 320000 if (math.random(100) > 10) then db.storage[id].need_sleep = true return true end db.storage[id].need_sleep = false end return false end function animpoint_predicate_roast(id,camp) local npc = db.storage[id] and db.storage[id].object if (npc and not db.storage[id].need_sleep) then local smart = xr_gulag.get_npc_smart(npc) if (smart) then local fires = db.campfire_table_by_smart_names[smart:name()] if (fires) then for id,binder in pairs(fires) do if (binder.object and binder.campfire and binder.campfire:is_on()) then local obj = level.object_by_id(id) if (obj and obj:position():distance_to_sqr(npc:position()) <= 7) then return true end end end end end end return false end -------------------------------------------------------------------------------- -- Associative table (smartcover - animation) ---------------------------------- -------------------------------------------------------------------------------- associations = { animpoint_stay_wall = { {name = "animpoint_stay_wall", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_stay_wall_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_stay_wall_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_stay_wall_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_stay_wall_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, -- {name = "animpoint_stay_wall_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, -- {name = "animpoint_stay_wall_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, {name = "animpoint_stay_wall_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_stay_table = { {name = "animpoint_stay_table", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_stay_table_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_stay_table_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_stay_table_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_stay_table_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, -- {name = "animpoint_stay_table_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, -- {name = "animpoint_stay_table_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, {name = "animpoint_stay_table_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_sit_high = { {name = "animpoint_sit_high", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_sit_high_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_sit_high_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_sit_high_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_sit_high_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, -- {name = "animpoint_sit_high_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, {name = "animpoint_sit_high_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, -- {name = "animpoint_sit_high_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_sit_normal = { {name = "animpoint_sit_normal", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_sit_normal_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_sit_normal_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_sit_normal_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_sit_normal_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, {name = "animpoint_sit_normal_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, -- {name = "animpoint_sit_normal_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, -- {name = "animpoint_sit_normal_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_sit_low = { {name = "animpoint_sit_low", predicate = xr_animpoint_predicates.const_predicate_true}, --{name = "animpoint_sit_low_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, --{name = "animpoint_sit_low_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, --{name = "animpoint_sit_low_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, --{name = "animpoint_sit_low_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, {name = "animpoint_sit_low_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, {name = "animpoint_sit_low_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, -- {name = "animpoint_sit_low_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_sit = { {name = "animpoint_sit", predicate = xr_animpoint_predicates.const_predicate_true} }, animpoint_sit_ass = { --mlr {name = "animpoint_sit_ass_use_pda", predicate = xr_animpoint_predicates.animpoint_predicate_use_pda}, {name = "animpoint_sit_ass_roast_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_ass_roast_bred", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_ass_roast_kolbasa_bred", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_ass_sleep", predicate = xr_animpoint_predicates.animpoint_predicate_need_sleep}, {name = "animpoint_sit_ass", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_sit_ass_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_sit_ass_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_sit_ass_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_sit_ass_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, {name = "animpoint_sit_ass_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, {name = "animpoint_sit_ass_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, -- {name = "animpoint_sit_ass_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_sit_knee = { {name = "animpoint_sit_knee_roast_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_knee_roast_bred", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_knee_roast_kolbasa_bred", predicate = xr_animpoint_predicates.animpoint_predicate_roast}, {name = "animpoint_sit_knee_sleep", predicate = xr_animpoint_predicates.animpoint_predicate_need_sleep}, {name = "animpoint_sit_knee", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_sit_knee_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_sit_knee_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_sit_knee_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_sit_knee_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, {name = "animpoint_sit_knee_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, {name = "animpoint_sit_knee_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, -- {name = "animpoint_sit_knee_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, animpoint_stay_bar = { {name = "animpoint_stay_bar", predicate = xr_animpoint_predicates.const_predicate_true}, {name = "animpoint_stay_bar_eat_bread", predicate = xr_animpoint_predicates.animpoint_predicate_bread}, {name = "animpoint_stay_bar_eat_kolbasa", predicate = xr_animpoint_predicates.animpoint_predicate_kolbasa}, {name = "animpoint_stay_bar_drink_vodka", predicate = xr_animpoint_predicates.animpoint_predicate_vodka}, {name = "animpoint_stay_bar_drink_energy", predicate = xr_animpoint_predicates.animpoint_predicate_energy}, -- {name = "animpoint_stay_bar_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, -- {name = "animpoint_stay_bar_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica}, {name = "animpoint_stay_bar_weapon", predicate = xr_animpoint_predicates.animpoint_predicate_weapon}, }, walker_camp = { {name = "play_guitar", predicate = xr_animpoint_predicates.animpoint_predicate_guitar}, {name = "play_harmonica", predicate = xr_animpoint_predicates.animpoint_predicate_harmonica} } }